/*
vector()：                                   默认构造函数，创建空的 vector。
vector(size_type count)：                    创建指定大小的 vector。
vector(size_type count, const T &value)：    创建指定大小并填充指定值的 vector。
vector(const vector &other)：                拷贝构造函数。
vector(vector &&other) noexcept：            移动构造函数。
*/

#include <iostream>
#include <string>
// 容器
#include <vector>

using namespace std;


struct my_stu
{
public:

    string name;
    int id;

    my_stu()
    {

    }

    my_stu(string name , int id)
        :name(name) , id(id)
    {

    }
};


int main(int argc, char const *argv[])
{
    vector<int> v1;

    cout << "v1的大小" << v1.size() << endl;

    vector<int> v2(10 , 50);

    cout << "v1的大小" << v2.size() << "v1的值" << v2.at(9) << endl;


    for (size_t i = 0; i < 10; i++)
    {
        v2[i] = i;
    }
    

    // front 和 back
    cout << "v2的值" << v2.front() << endl;
    cout << "v2的值" << v2.back() << endl;
    
    for ( auto it = v1.begin() ; it != v1.end() ; ++it)
    {
        cout << *it << endl;
        // *it   it 是指向 内部元素的首地址 *
    }
    

    vector<my_stu> v3;
    v3.push_back(my_stu("张三" , 10));
    v3.push_back(my_stu("张四" , 10));
    v3.push_back(my_stu("张五" , 10));
    v3.push_back(my_stu("张六" , 10));

    // iterator 迭代器的类型
    for ( vector<my_stu>::iterator it = v3.begin() ; it != v3.end() ; it++)
    {
        cout << (*it).id << endl;
        cout << (*it).name << endl;
    }

    
    

    return 0;
}
